package com.example.backdemo.service.Impl;

import com.example.backdemo.mapper.CustInfoMapper;
import com.example.backdemo.service.CustomInfoService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.*;

@Service
public class CustomInfoServiceImpl implements CustomInfoService {

    @Resource
    private CustInfoMapper custInfoMapper;

    @Override
    public Map<String, Integer> getAge() {
        List<Integer> list = custInfoMapper.getAge();
        /**
         * 在这里自动筛选脏数据
         *   给定数据中，最小age为0，最大age为98
         *   这里只记录年龄在18~80岁的
         *   分组：18~25，26~32，33~40，41~50，51~60，61~70，71~80
         */
        Map<String, Integer> map = new HashMap<>();
        map.put("18-25", 0);
        map.put("26-32", 0);
        map.put("33-40", 0);
        map.put("41-50", 0);
        map.put("51-60", 0);
        map.put("61-70", 0);
        map.put("71-80", 0);
        for (Integer i : list) {
            if (i >= 18 && i <= 25) {
                int value = map.get("18-25") + 1;
                map.put("18-25", value);
            } else if (i >= 26 && i <= 32) {
                int value = map.get("26-32") + 1;
                map.put("26-32", value);
            } else if (i >= 33 && i <= 40) {
                int value = map.get("33-40") + 1;
                map.put("33-40", value);
            } else if (i >= 41 && i <= 50) {
                int value = map.get("41-50") + 1;
                map.put("41-50", value);
            } else if (i >= 51 && i <= 60) {
                int value = map.get("51-60") + 1;
                map.put("51-60", value);
            } else if (i >= 61 && i <= 70) {
                int value = map.get("61-70") + 1;
                map.put("61-70", value);
            } else if (i >= 71 && i <= 80) {
                int value = map.get("71-80") + 1;
                map.put("71-80", value);
            }
        }
        return map;
    }

    @Override
    public Map<String, Integer> getGrade() {
        /**
         * 整合用户等级，每个等级的数量
         */
        Set<String> set = new HashSet<>();
        List<String> list = custInfoMapper.getGrade();
        for (String s : list) {
            set.add(s);
        }
        Map<String, Integer> map = new HashMap<>();
        for (String s : set) {
            map.put(s, 0);
        }
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String str = it.next();
            int value = map.get(str) + 1;
            map.put(str, value);
        }
        return map;
    }

    @Override
    public Map<String, Integer> getSex() {
        /**
         * 整合用户性别，返回男：xx人，女：xx人
         */
        List<String> list = custInfoMapper.getSex();
        Map<String, Integer> map = new HashMap<>();
        map.put("男性", 0);
        map.put("女性", 0);
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String str = it.next();
            int value = map.get(str) + 1;
            map.put(str, value);
        }
        return map;
    }

    @Override
    public Map<String, Integer> getJob() {
        /**
         * 整合用户工作信息，返回 xx工作：xx人
         *   由于数量过多，前端采用滑动坐标轴方式实现
         */
        Set<String> set = new HashSet<>();
        List<String> list = custInfoMapper.getJob();
        for (String s : list) {
            set.add(s);
        }
        Map<String, Integer> map = new HashMap<>();
        for (String s : set) {
            map.put(s, 0);
        }
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String str = it.next();
            int value = map.get(str) + 1;
            map.put(str, value);
        }
        return map;
    }

    @Override
    public Integer getTotal() {
        return custInfoMapper.getTotal();
    }

    @Override
    public Map<String, Integer> getFlag1() {
        List<Integer> list = custInfoMapper.getFlag1();
        Map<String, Integer> map = new HashMap<>();
        String type1 = "本行员工";
        String type2 = "非本行员工";
        map.put(type1, 0);
        map.put(type2, 0);
        for (Integer i : list) {
            if (i == 0) {
                int value = map.get(type1) + 1;
                map.put(type1, value);
            } else if (i == 1) {
                int value = map.get(type2) + 1;
                map.put(type2, value);
            } else {
                System.out.println("出现异常数据，此异常数据不作为参考值");
            }
        }
        return map;
    }

    @Override
    public Map<String, Integer> getFlag2() {
        List<Integer> list = custInfoMapper.getFlag2();
        Map<String, Integer> map = new HashMap<>();
        String type1 = "在我行贷款";
        String type2 = "不在我行贷款";
        map.put(type1, 0);
        map.put(type2, 0);
        for (Integer i : list) {
            if (i == 0) {
                int value = map.get(type1) + 1;
                map.put(type1, value);
            } else if (i == 1) {
                int value = map.get(type2) + 1;
                map.put(type2, value);
            } else {
                System.out.println("出现异常数据，此异常数据不作为参考值");
            }
        }
        return map;
    }

    @Override
    public Map<String, Integer> getFlag3() {
        List<Integer> list = custInfoMapper.getFlag3();
        Map<String, Integer> map = new HashMap<>();
        String type1 = "vip";
        String type2 = "非vip";
        map.put(type1, 0);
        map.put(type2, 0);
        for (Integer i : list) {
            if (i == 0) {
                int value = map.get(type1) + 1;
                map.put(type1, value);
            } else if (i == 1) {
                int value = map.get(type2) + 1;
                map.put(type2, value);
            } else {
                System.out.println("出现异常数据，此异常数据不作为参考值");
            }
        }
        return map;
    }


}
